#include <stdio.h>
#include <strings.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(void) {

        int fd_in,  fd_out;
        char buf[1024];

        memset(buf,  0,  1024); /* пустий буфер*/
        fd_in = open("infile",  O_RDONLY);
        fd_out = open("outfile",  O_WRONLY|O_CREAT,00644);

        fork(); /* Порядок виклику нащадка і предка значення не має */

        while (read(fd_in,  buf,  2) > 0) { /* Цикл по файлу infile */
                printf("Це %s %d: %s",(getppid()==(getpid()-1)?"нащадок":"предок"),  getpid(),  buf);
                /* Вивід стрічки */
                sprintf(buf,  "Це %s %d \n\r",  (getppid()==(getpid()-1)?"нащадок":"предок"), getpid());
                write(fd_out,  buf,  strlen(buf));
                sleep(1); // призупинення процесу на 1 секунду
                memset(buf,  0,  1024); /* пустий буфер*/
        }
        sleep(10);
}
